package JUC;

/**
 * @author 豆包LU
 * @date 2023/5/8 10:49
 */
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class BlockingQueueExample {

    public static void main(String[] args) throws InterruptedException {
        BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(5); // 创建一个大小为5的阻塞队列

        // 向队列中添加元素
        queue.put(1);
        queue.put(2);
        queue.put(3);



        // 查看队列头部的元素，但不取走该元素
        System.out.println("队列头部的元素为：" + queue.peek());

        // 从队列中取走一个元素
        int num1 = queue.take();
        System.out.println("从队列中取出的元素为：" + num1);

        // 向队列中添加元素
        boolean offerResult = queue.offer(4);
        System.out.println("向队列中添加元素4的结果为：" + offerResult);

        // 从队列中取走一个元素
        int num2 = queue.poll();
        System.out.println("从队列中取出的元素为：" + num2);

        // 从队列中移除指定元素
        boolean removeResult = queue.remove(2);
        System.out.println("从队列中移除元素2的结果为：" + removeResult);

        // 判断队列中是否包含指定元素
        boolean containsResult = queue.contains(3);
        System.out.println("队列中是否包含元素3：" + containsResult);

        // 从队列中取走所有元素，并将它们添加到指定的集合中
        ArrayBlockingQueue<Integer> collection = new ArrayBlockingQueue<>(3);
        queue.drainTo(collection);
        System.out.println("从队列中取出的所有元素为：" + collection);

        // 返回队列中元素的数量
        int size = queue.size();
        System.out.println("队列中元素的数量为：" + size);

        // 返回队列中剩余的空位数量
        int remainingCapacity = queue.remainingCapacity();
        System.out.println("队列中剩余的空位数量为：" + remainingCapacity);
    }
}

